<template>
    <rx-layout>
        <div slot="center" style>
            <rx-fit :isheader="isheader">
                <div slot="toolheader" foldheader="true" foldbtn="false" border="false">
                    <div class="table-operator">
                        <rx-button
                            alias="formRegLibAdd"
                            :butn-icon="'plus'"
                            :butn-type="'primary'"
                            :show-no-right="true"
                            @click="add"
                        >{{$ti18('rxList.newBtn','新建')}}
                        </rx-button
                        >
                        <a-dropdown>
                            <a-button> {{$ti18('rxList.moreBtn','更多')}}
                                <a-icon type="down"/>
                            </a-button>
                            <a-menu slot="overlay">
                                <a-menu-item key="1" @click="doImport"><i class="iconfont icondaoru"></i>{{$ti18('rxList.importBtn','导入')}}
                                </a-menu-item>
                                <a-sub-menu>
                                    <span slot="title"><i class="iconfont icondaochu"></i>{{$ti18('rxList.exportBtn','导出')}}</span>
                                    <a-menu-item @click="doExport('0')"><i class="iconfont icondaochu"></i>{{i18n('list.exportAll','导出当前所有')}}
                                    </a-menu-item>
                                    <a-menu-item @click="doExport('1')"><i class="iconfont icondaochu"></i>{{$ti18('rxList.exportSelected','导出选中')}}
                                    </a-menu-item>
                                </a-sub-menu>
                                <a-menu-item
                                    key="2"
                                    @click="editOne"
                                    v-if="editEnable && selectedRowKeys.length > 0"
                                    alias="formRuleEdit"
                                    :butn-type="'primary'"
                                    :show-no-right="false"
                                >
                                    <a-icon type="edit"/>
                                    {{$ti18('rxList.editBtn','编辑')}}
                                </a-menu-item>
                                <a-menu-item
                                    key="3"
                                    @click="delByIds(selectedRowKeys)"
                                    v-if="removeEnable && selectedRowKeys.length > 0"
                                    alias="formRuleDelete"
                                    :butn-type="'danger'"
                                    :show-no-right="false"
                                >
                                    <a-icon type="delete"/>
                                    {{$ti18('rxList.delBtn','删除')}}
                                </a-menu-item>
                                <a-menu-item
                                    key="4"
                                    @click="changeExport(exportConf)"
                                    v-if="selectedRowKeys.length > 0"
                                    alias="formRuleDelete"
                                    :butn-type="'primary'"
                                    :show-no-right="false"
                                >
                                    <a-icon type="switcher"/>
                                    {{$ti18('rxList.changeExport','切换导出')}}
                                </a-menu-item>
                            </a-menu>
                        </a-dropdown>
                    </div>
                    <span class="search-btn-box" v-if="!isheader">
            <span class="search-btn" @click.stop="searchshow"><i class="iconfont iconguolv"></i>{{$ti18('rxList.leachBtn','过滤')}}</span>
          </span>
                </div>
                <div btnalign="right" slot="searchbar" v-if="fitSearch" @search="search" @cancel="cancel"
                     @close="closeSearchbar">
                    <a-form :layout="colLayout">
                        <a-row :gutter="24">
                            <a-col :span="colSpan">
                                <a-form-item :label="$ti18('rxForm.rxAlias', '别名')">
                                    <a-input :placeholder="$ti18('rxForm.rxAlias', '别名','','input')" v-model="queryParam.Q_KEY__S_LK"/>
                                </a-form-item>
                            </a-col>
                            <a-col :span="colSpan">
                                <a-form-item :label="$ti18('rxForm.name','名称')">
                                    <a-input :placeholder="$ti18('rxForm.name','名称','','input')" v-model="queryParam.Q_NAME__S_LK"/>
                                </a-form-item>
                            </a-col>
                            <a-col :span="colSpan" v-if="!curApp.appId">
                                <a-form-item :label="$ti18('rxForm.appId', '应用')">
                                    <rx-search-app @change="appChange" v-model="searchApps">
                                    </rx-search-app>
                                </a-form-item>
                            </a-col>
                        </a-row>
                    </a-form>
                </div>
                <rx-grid
                    ref="table"
                    :allowRowSelect="true"
                    :multiSelect="true"
                    :columns="columns"
                    :bordered="isBorder"
                    :defaultPageSize="10"
                    url="/api-form/form/core/formRegLib/query"
                    :queryParam="queryParam"
                    data-field="result.data"
                    :pageSizeOptions="['10', '30', '40']"
                    id-field="regId"
                    @selectChange="onSelectChange"
                >
                    <span slot="exportApp">
                         {{ exportI18n('export.isExport','导出') }}
                        <export-app/>
                    </span>
                <span slot="appId" slot-scope="{ text, record }">
                   {{ allApps[text] ? $i18(allApps[text].appName): $ti18('rxList.noAppName','无')}}
                </span>
                <span slot="isExport" slot-scope="{ text, record }">
                    <a-tag :color="text == 1 ? 'green' : 'red'">
                        <span>{{ text == 1 ? exportI18n('export.yes','是') : exportI18n('export.no','否') }}</span>
                    </a-tag>
                </span>
                <span slot="action" slot-scope="{ text, record }" class="actionIcons">
                    <span v-if="editEnable && canEdit(record) && showBtn(false)" @click="edit(record)">{{$ti18('rxList.editBtn','编辑')}}</span>
                    <span v-if="removeEnable && canDel(record) && showBtn(false)" @click="delByIds([record.regId])">{{$ti18('rxList.delBtn','删除')}}</span>
                    <span @click="setExport(record,exportConf)">{{record.isExport == 1 ? exportI18n('export.noExport','不导出') : exportI18n('export.exported','导出')}}</span>
                </span>
                </rx-grid>
            </rx-fit>
        </div>
    </rx-layout>
</template>

<script>
import FormRegLibApi from '@/api/form/core/formRegLib'
import FormRegLibEdit from './FormRegLibEdit'
import {BaseList, Util} from "@lowcode/jpaas-common-lib"
import FormImport from './FormImport'
import userState from "@/assets/js/userState";
import {mapState} from "vuex";
import exportApp from "@/views/modules/share/exportApp";
import AppSearch from "@/views/modules/share/AppSearch";
import RxSearchApp from "@/views/modules/share/rx-search-app";
import switchExport from "@/utils/switchExport";


export default {
    name: 'FormRegLibList',
    mixins: [BaseList, userState,AppSearch,switchExport],
    components:{
        exportApp,
        RxSearchApp
    },
    computed: {
        ...mapState({
            //所属应用
            allApps: state => state.appSetting ? state.appSetting.allApps : {}
        }),
    },
    data() {
        return {
            columns: [
                {
                    title: this.$ti18('rxList.index','序号'),
                    type: 'indexColumn',
                    width: 40,
                    dataIndex: 'serial',
                    scopedSlots: {customRender: 'serial'},
                },
                {title: this.$ti18('rxForm.rxAlias', '别名'), dataIndex: 'key', width: 100},
                {title: this.$ti18('rxForm.name','名称'), dataIndex: 'name', width: 100},
                {title: this.$ti18('rxForm.createTime','创建时间'), dataIndex: 'createTime', width: 120},
                {
                    title: this.i18n('form.app','所属应用'),
                    dataIndex: 'appId',
                    width: 100,
                    sortField: 'APP_ID_',
                    scopedSlots: {customRender: 'appId'}
                },
                {
                    dataIndex: 'isExport',
                    slots: { title: 'exportApp' },
                    width: 60,
                    scopedSlots: {customRender: 'isExport'}
                },
                {title: this.$ti18('rxList.action','操作'), width: 80, dataIndex: 'action', scopedSlots: {customRender: 'action'}},
            ],
            component: FormRegLibEdit,
            comment: this.i18n('form.regularEx','正则表达式'),
            widthHeight: ['800px', '600px'],
            /**
             * 导出配置
             */
            exportConf:{
                Api:FormRegLibApi,
                id:"regId"
            }
        }
    },
    created() {
        this.needFilterAppId();
        this.columns=this.removeAppColumn(this.curApp.appId,this.columns)
    },
    methods: {
        i18n(name, text, key) {
            return this.$ti18(name, text, "formRegLib", key);
        },
        exportI18n(name,text,key){
            return this.$ti18(name,text,"appExport",key);
        },
        delById(ids) {
            return FormRegLibApi.del({ids: ids.join(',')})
        },
        getListByParams(parameter) {
            return FormRegLibApi.query(parameter)
        },
        search() {
            this.$refs.table.loadData()
        },
        cancel() {
            this.resetSearch();
        },
        closeSearchbar() {
            //关闭过滤弹窗；（点击X触发）
            this.fitSearch = false;
        },
        doExport(isSelected) {
            var exportList = [];
            if (isSelected == "1") {
                exportList = this.$refs.table.getSelectedRows();
                if (!exportList || exportList.length == 0) {
                    this.$warning({
                        title: this.$ti18('rxMsa.masWarn.delInfo','警告'),
                        content: this.i18n('exportTips','请选择需要导出的记录！'),
                    });
                    return;
                }
            } else {
                exportList = this.$refs.table.dataAction;
            }

            if (exportList == "") {
                this.$warning({
                    title: this.$ti18('rxMsa.masWarn.delInfo','警告'),
                    content: this.i18n('exportError','该分类没有数据！'),
                });
                return;
            }
            var solutionIds = [];
            exportList.forEach(item => {
                solutionIds.push(item.regId);
            });
            FormRegLibApi.doExport(solutionIds);
        },
        doImport() {
            Util.open({
                component: FormImport,
                curVm: this,
                widthHeight: ['800px', '600px'],
                title: this.i18n('list.dataImport','数据脱敏导入'),
                data: {
                    callback: function (params) {
                        let self = this;
                        FormRegLibApi.doImport(params).then(res => {
                            this.isSpinning = false;
                            if (!res.success) {
                                return;
                            }
                            self.getUpdataSqls(res.data);
                        });
                    }
                }
            }, function (action) {
            });
        },
    }
}
</script>
<style scoped>

</style>

